libxc: export xc_map_m2p() so that it can be called outside.
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 1 Jun 2009 13:12:53 +0000 (14:12 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 1 Jun 2009 13:12:53 +0000 (14:12 +0100)
Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
tools/libxc/xc_domain_save.c
tools/libxc/xenguest.h

index 04d4b3085c3a49fbb2c381392654fa3479857f8f..90557e26cf5e56c2882167e20f5d371bee8a7210 100644 (file)
@@ -510,9 +510,10 @@ static int canonicalize_pagetable(unsigned long type, unsigned long pfn,
     return race;
 }
 
-static xen_pfn_t *xc_map_m2p(int xc_handle,
+xen_pfn_t *xc_map_m2p(int xc_handle,
                                  unsigned long max_mfn,
-                                 int prot)
+                                 int prot,
+                                 unsigned long *mfn0)
 {
     struct xen_machphys_mfn_list xmml;
     privcmd_mmap_entry_t *entries;
@@ -561,7 +562,8 @@ static xen_pfn_t *xc_map_m2p(int xc_handle,
         goto err2;
     }
 
-    m2p_mfn0 = entries[0].mfn;
+    if (mfn0)
+        *mfn0 = entries[0].mfn;
 
 err2:
     free(entries);
@@ -949,7 +951,7 @@ int xc_domain_save(int xc_handle, int io_fd, uint32_t dom, uint32_t max_iters,
     }
 
     /* Setup the mfn_to_pfn table mapping */
-    if ( !(live_m2p = xc_map_m2p(xc_handle, max_mfn, PROT_READ)) )
+    if ( !(live_m2p = xc_map_m2p(xc_handle, max_mfn, PROT_READ, &m2p_mfn0)) )
     {
         ERROR("Failed to map live M2P table");
         goto out;
index 32de5bdd939a60a0cf3f5c410eea0f0290479bde..cd55f89cca0ca4ad9d1dc211c02213b6441b7911 100644 (file)
@@ -163,4 +163,17 @@ int xc_mark_page_offline(int xc, unsigned long start,
 int xc_query_page_offline_status(int xc, unsigned long start,
                                  unsigned long end, uint32_t *status);
 
+
+/**
+ * This function map m2p table
+ * @parm xc_handle a handle to an open hypervisor interface
+ * @parm max_mfn the max pfn
+ * @parm prot the flags to map, such as read/write etc
+ * @parm mfn0 return the first mfn, can be NULL
+ * @return mapped m2p table on success, NULL on failure
+ */
+xen_pfn_t *xc_map_m2p(int xc_handle,
+                      unsigned long max_mfn,
+                      int prot,
+                      unsigned long *mfn0);
 #endif /* XENGUEST_H */